

import gconfig from '@/utils/config'

/**
 * 上传文件 （单个文件）
 * @param {*} config 
 * @param config.token 上传token (放在body中的)
 * @param config.file 文件 （单个）
 * @param config.key  上传成功后的文件名，带后缀
 * @param config.process 进度（方法）
 * 
 */

export function uploadQiniu(config){
    if(!config || !config.file){
        throw new Error('upload方法的参数不正确');
    }
    return new Promise(function(resolve,reject){
         //创建formdata对象
        var formdata = new FormData();
        formdata.append("file",config.file);
        formdata.append('token',config.token);
        formdata.append('key',config.key)
        //创建xhr，使用ajax进行文件上传
        var xhr = new XMLHttpRequest();
        xhr.open("post",gconfig.QiNiuHost);
        
        //回调
        xhr.onreadystatechange = function () {
            if (xhr.readyState==4 && xhr.status==200){
                if(typeof(xhr.responseText)=='string'){
                    resolve(JSON.parse(xhr.responseText))
                }else{
                    resolve(xhr.responseText);
                }
            }
        }
        //获取上传的进度
        xhr.upload.onprogress = function (event) {
            if(event.lengthComputable){
                var percent = event.loaded/event.total *100;
                if(config.process){
                    config.process.apply(null,[percent]);
                }
            }
        }
        xhr.onerror=function(){
            reject('上传出错了');
        }
        //将formdata上传
        xhr.send(formdata);
    })
    
}